/*
 * File Name : shell_environment.h
 * Auther : dream.liuguobiao
 * Create Date : 2010-5-14
 * Last Edit : 2010-5-16
 */

#ifndef SHELL_ENVIRONMENT_H
#define SHELL_ENVIRONMENT_H

#include <stack>

#include "file_system.h"
#include "user.h"
#include "users.h"
#include "groups.h"

class shell_environment
{
private:
  file_system *Linux_file_system ;
  user *administrator ;
  users *all_users ;
  groups *all_groups ;
  std::stack<user*> login_users ;

  static shell_environment *instance_shell_environment ;
  shell_environment();

public:
  static shell_environment *get_shell_environment();
  file_system *get_file_system();
  user *get_administrator() ;
  users *get_all_users() ;
  groups *get_all_groups();
  std::stack<user*> *get_login_users();
};

#endif
